<template>
  <a-row :gutter="10" class="collect">
    <a-col :span="24" class="header_col">
      <div class="task_list_left_top_name">
        <div class="icon_box">
          <i class="iconfont icon-yueyongdianliangbili"></i>
        </div>

        <div class="name">核算汇总</div>
      </div>
      <div class="header_task_input_box">
        <a-form
          class="form_"
          layout="inline"
          @keyup.enter.native="searchQuery"
          style="display:flex"
        >
          <a-form-item label="填报周期" :labelCol="labelCol" :wrapperCol="wrapperCol">
            <a-range-picker
              style="width: 210px"
              v-model="queryParam.createTimeRange"
              format="YYYY-MM-DD"
              :placeholder="['开始时间', '结束时间']"
              @change="onDateChange"
              @ok="onDateOk"
            />
          </a-form-item>

          <span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
            <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
            <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
          </span>
        </a-form>
      </div>
    </a-col>

    <a-col :md="24" :sm="24" class="collect_tab">
      <a-card :bordered="false">
        <!-- 查询区域 -->
        <div class="table-page-search-wrapper">
          <!-- 搜索区域 -->
          <div class="header_left">
            <a-button
              v-if="selectedRowKeys1.length>1"
              style="display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;"
              type="primary"
              @click="searchReset"
              icon="reload"
            >汇总</a-button>
            <span class="total">0个项目,已在9分钟前更新</span>
          </div>
        </div>
        <!-- 操作按钮区域 -->

        <div class="ant-alert ant-alert-info">
          <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择
          <a>
            <b>{{ selectedRowKeys1.length }}</b>
          </a>项
          <a @click="onClearSelected1">清空</a>
        </div>

        <div style="margin-top: 15px">
          <a-table
            style="height: 500px"
            ref="table"
            size="middle"
            bordered
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource1"
            :pagination="ipagination"
            :loading="loading"
            :rowSelection="{
              selectedRowKeys: selectedRowKeys1,
              onChange: onSelectChange1,
       
            }"
            @change="handleTableChange"
          >
            <span slot="action" slot-scope="text, record">
              <a>详情</a>
            </span>
          </a-table>
        </div>
      </a-card>
    </a-col>
  </a-row>
</template>
<script>
import { ListMixin } from "@/mixins/ListMixin";
import { deleteAction, postAction, getAction } from "@/api/manage";

export default {
  name: "RoleUserList",
  mixins: [ListMixin],
  components: {
    //   UserRoleModal,
    //   SelectUserModal,
    //   RoleModal,
    //   UserModal,
    //   moment
  },
  data() {
    return {
      model1: {},
      model2: {},
      currentRoleId: "",
      queryParam1: {},
      queryParam2: {},
      dataSource1: [
        {
          taskName: "1月份填报",
          date: "2022-01-01 - 2022-02-01",
          scope1: 13.3,
          scope2: 0.7,
          scope3: 1326,
          total: 1340
        },
        {
          taskName: "2月份填报",
          date: "2022-02-01 - 2022-03-01",
          scope1: 13.3,
          scope2: 0.7,
          scope3: 1326,
          total: 1340
        },
        {
          taskName: "3月份填报",
          date: "2022-03-01 - 2022-04-01",
          scope1: 13.3,
          scope2: 0.7,
          scope3: 1326,
          total: 1340
        },
        {
          taskName: "4月份填报",
          date: "2022-04-01 - 2022-05-01",
          scope1: 13.3,
          scope2: 0.7,
          scope3: 1326,
          total: 1340
        },
        {
          taskName: "5月份填报",
          date: "2022-05-01 - 2022-06-01",
          scope1: 13.3,
          scope2: 0.7,
          scope3: 1326,
          total: 1340
        }
      ],
      dataSource2: [],
      ipagination1: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ["10", "20", "30"],
        showTotal: (total, range) => {
          return range[0] + "-" + range[1] + " 共" + total + "条";
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      ipagination2: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ["10", "20", "30"],
        showTotal: (total, range) => {
          return range[0] + "-" + range[1] + " 共" + total + "条";
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      isorter1: {
        column: "createTime",
        order: "desc"
      },
      isorter2: {
        column: "createTime",
        order: "desc"
      },
      filters1: {},
      filters2: {},
      loading1: false,
      loading2: false,
      selectedRowKeys1: [],
      selectedRowKeys2: [],
      selectionRows1: [],
      selectionRows2: [],
      test: {},
      rightcolval: 0,
      columns: [
        {
          title: "任务名称",
          align: "left",
          dataIndex: "taskName"
        },
        {
          title: "填报周期",
          align: "left",
          dataIndex: "date"
        },
        {
          title: "范围一:直接排放 ",
          align: "left",
          dataIndex: "scope1"
        },
        {
          title: "范围二:直接排放 ",
          align: "left",
          dataIndex: "scope2"
        },
        {
          title: "范围三:气体间接排放 ",
          dataIndex: "scope3",
          align: "left",
          sorter: true
        },
        ,
        {
          title: "总排放",
          align: "left",
          dataIndex: "total"
        },
        {
          title: "操作",
          dataIndex: "action",
          align: "left",
          scopedSlots: { customRender: "action" }
        }
      ],
      columns2: [
        {
          title: "用户账号",
          align: "center",
          dataIndex: "username",
          width: 120
        },
        {
          title: "用户名称",
          align: "center",
          width: 100,
          dataIndex: "realname"
        },
        {
          title: "状态",
          align: "center",
          width: 80,
          dataIndex: "status_dictText"
        },

        {
          title: "操作",
          dataIndex: "action",
          scopedSlots: { customRender: "action" },
          align: "center",
          width: 120
        }
      ],

      // 高级查询参数
      superQueryParams2: "",
      // 高级查询拼接条件
      superQueryMatchType2: "and",
      url: {
        list: "/sys/role/list",
        delete: "/sys/role/delete",
        list2: "/sys/user/userRoleList",
        addUserRole: "/sys/user/addSysUserRole",
        delete2: "/sys/user/deleteUserRole",
        deleteBatch2: "/sys/user/deleteUserRoleBatch",
        exportXlsUrl: "sys/role/exportXls",
        importExcelUrl: "sys/role/importExcel"
      }
    };
  },
  computed: {
    importExcelUrl: function() {
      //    `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
      return "";
    },
    leftColMd() {
      return this.selectedRowKeys1.length === 0 ? 24 : 12;
    },
    rightColMd() {
      return this.selectedRowKeys1.length === 0 ? 0 : 12;
    }
  },
  methods: {
    onSelectChange2(selectedRowKeys, selectionRows) {
      this.selectedRowKeys2 = selectedRowKeys;
      this.selectionRows2 = selectionRows;
    },
    onClearSelected2() {
      this.selectedRowKeys2 = [];
      this.selectionRows2 = [];
    },
    onClearSelected1() {
      this.selectedRowKeys1 = [];
      this.selectionRows1 = [];
    },
    onSelectChange1(selectedRowKeys, selectionRows) {
      this.rightcolval = 1;
      this.selectedRowKeys1 = selectedRowKeys;
      this.selectionRows1 = selectionRows;
      this.model1 = Object.assign({}, selectionRows[0]);
      //   console.log(this.model1);
      this.currentRoleId = selectedRowKeys[0];
      this.loadData2();
    },
    onClearSelected() {},

    getQueryParams2() {
      //获取查询条件
      let sqp = {};
      if (this.superQueryParams2) {
        sqp["superQueryParams"] = encodeURI(this.superQueryParams2);
        sqp["superQueryMatchType"] = this.superQueryMatchType2;
      }
      var param = Object.assign(
        sqp,
        this.queryParam2,
        this.isorter2,
        this.filters2
      );
      param.field = this.getQueryField2();
      param.pageNo = this.ipagination2.current;
      param.pageSize = this.ipagination2.pageSize;
      return filterObj(param);
    },
    getQueryField2() {
      //TODO 字段权限控制
      var str = "id,";
      this.columns2.forEach(function(value) {
        str += "," + value.dataIndex;
      });
      return str;
    },
    handleEdit2: function(record) {
      this.$refs.modalForm2.title = "编辑";
      this.$refs.modalForm2.roleDisabled = true;
      this.$refs.modalForm2.edit(record);
    },
    handleAdd2: function() {
      if (this.currentRoleId == "") {
        this.$message.error("请选择一个角色!");
      } else {
        this.$refs.modalForm2.roleDisabled = true;
        this.$refs.modalForm2.title = "新增";
        this.$refs.modalForm2.edit({
          activitiSync: "1",
          userIdentity: 1,
          selectedroles: this.currentRoleId
        });
      }
    },
    modalFormOk2() {
      // 新增/修改 成功时，重载列表
      this.loadData2();
    },
    loadData2(arg) {
      if (!this.url.list2) {
        this.$message.error("请设置url.list2属性!");
        return;
      }
      //加载数据 若传入参数1则加载第一页的内容
      if (arg === 1) {
        this.ipagination2.current = 1;
      }
      if (this.currentRoleId === "") return;
      let params = this.getQueryParams2(); //查询条件
      params.roleId = this.currentRoleId;
      this.loading2 = true;
      getAction(this.url.list2, params).then(res => {
        if (res.success) {
          this.dataSource2 = res.result.records;
          this.ipagination2.total = res.result.total;
        }
        this.loading2 = false;
      });
    },
    handleDelete1: function(id) {
      this.handleDelete(id);
      this.dataSource2 = [];
      this.currentRoleId = "";
    },
    handleDelete2: function(id) {
      if (!this.url.delete2) {
        this.$message.error("请设置url.delete2属性!");
        return;
      }
      var that = this;
      deleteAction(that.url.delete2, {
        roleId: this.currentRoleId,
        userId: id
      }).then(res => {
        if (res.success) {
          that.$message.success(res.message);
          that.loadData2();
        } else {
          that.$message.warning(res.message);
        }
      });
    },
    batchDel2: function() {
      if (!this.url.deleteBatch2) {
        this.$message.error("请设置url.deleteBatch2属性!");
        return;
      }
      if (this.selectedRowKeys2.length <= 0) {
        this.$message.warning("请选择一条记录！");
        return;
      } else {
        var ids = "";
        for (var a = 0; a < this.selectedRowKeys2.length; a++) {
          ids += this.selectedRowKeys2[a] + ",";
        }
        var that = this;
        //   console.log(this.currentDeptId);
        this.$confirm({
          title: "确认取消关联",
          content: "是否删除选中数据?",
          onOk: function() {
            deleteAction(that.url.deleteBatch2, {
              roleId: that.currentRoleId,
              userIds: ids
            }).then(res => {
              if (res.success) {
                that.$message.success(res.message);
                that.loadData2();
                that.onClearSelected();
              } else {
                that.$message.warning(res.message);
              }
            });
          }
        });
      }
    },
    selectOK(data) {
      let params = {};
      params.roleId = this.currentRoleId;
      params.userIdList = [];
      for (var a = 0; a < data.length; a++) {
        params.userIdList.push(data[a]);
      }
      //   console.log(params);
      postAction(this.url.addUserRole, params).then(res => {
        if (res.success) {
          this.loadData2();
          this.$message.success(res.message);
        } else {
          this.$message.warning(res.message);
        }
      });
    },

    handleAddUserRole() {
      if (this.currentRoleId == "") {
        this.$message.error("请选择一个角色!");
      } else {
        this.$refs.selectUserModal.visible = true;
      }
    },
    handleOpen(record) {
      this.rightcolval = 1;
      this.selectedRowKeys1 = [record.id];
      this.model1 = Object.assign({}, record);
      this.currentRoleId = record.id;
      this.onClearSelected2();
      this.loadData2();
    },
    /*handleEdit: function(record) {
        if (this.currentRoleId == '') {
          this.$message.error('请选择一个角色!')
        } else {
          this.$refs.modalForm.edit(record)
          this.$refs.modalForm.title = '编辑'
        }
      },*/
    searchQuery2() {
      this.loadData2(1);
    },
    searchReset2() {
      this.queryParam2 = {};
      this.loadData2(1);
    },
    handleTableChange2(pagination, filters, sorter) {
      //分页、排序、筛选变化时触发
      //TODO 筛选
      if (Object.keys(sorter).length > 0) {
        this.isorter2.column = sorter.field;
        this.isorter2.order = "ascend" == sorter.order ? "asc" : "desc";
      }
      this.ipagination2 = pagination;
      this.loadData2();
    },
    hideUserList() {
      //this.rightcolval = 0
      this.selectedRowKeys1 = [];
    },
    handlePerssion(roleId) {
      this.$refs.modalUserRole.show(roleId);
    }
  }
};
</script>
<style  lang="scss">
@import "@/assets/css/listcommon.scss";
@import "@/assets/css/collect.scss";
/* @import '~@assets/less/common.less'; */
/** Button按钮间距 */
.ant-btn {
  margin-left: 8px;
}
</style>